package DataAcess;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import javax.swing.JOptionPane;

import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import Domain.Relatorio;
import Exception.DadosException;

public class DAORelatorio extends Relatorio {

	Connection conexao = Conexao.getConexao();
	PreparedStatement prepare = null;
	ResultSet resultadosql = null;
	int linhasafetadas = 0;

	public Relatorio consultar() throws DadosException, JRException {
		// numPedido, idPrato, quantidade, valor
		Relatorio consulta = null;
		ArrayList<Relatorio> list = new ArrayList<>();
		try {

			JasperReport report = JasperCompileManager
					.compileReport("AutoFood.jrxml");

			String sql = "select * from pedido,relatorio order by valor_compra";

			conexao.setAutoCommit(false);
			PreparedStatement prepare = conexao.prepareStatement(sql);

			// prepare.setInt(1, numPedido);
			resultadosql = prepare.executeQuery();
			conexao.commit();

			while (resultadosql.next()) {
				consulta = new Relatorio();
				consulta.setNumPedido(resultadosql.getInt("numpedido"));
				consulta.setIdPrato(resultadosql.getInt("idprato"));
				consulta.setQuantidade(resultadosql.getInt("quantidade"));
				consulta.setValor(resultadosql.getDouble("valor"));
				consulta.setId_compra(resultadosql.getInt("id_compra"));
				consulta.setValor_compra(resultadosql.getFloat("valor_compra"));
				list.add(consulta);

			}

			JasperPrint print = JasperFillManager.fillReport(report, null,
					new JRBeanCollectionDataSource(list));

		} catch (SQLException e) {
			JOptionPane.showMessageDialog(null,
					DadosException.ERROR_ConsultarPedido);
			e.printStackTrace();
		}
		if (consulta == null) {
			throw new DadosException(DadosException.ERROR_ConsultarNula);
		}

		return consulta;

	}

}
